package br.com.usjt.sge.util;

import br.com.usjt.sge.complemento.EnderecoDAO;
import br.com.usjt.sge.complemento.EnderecoDAOHibernate;
import br.com.usjt.sge.complemento.TelefoneDAO;
import br.com.usjt.sge.complemento.TelefoneDAOHibernate;
import br.com.usjt.sge.correios.CepDAO;
import br.com.usjt.sge.correios.CepDAOHibernate;
import br.com.usjt.sge.estacionamento.EstacionamentoDAO;
import br.com.usjt.sge.estacionamento.EstacionamentoDAOHibernate;
import br.com.usjt.sge.reserva.ReservaDAO;
import br.com.usjt.sge.reserva.ReservaDAOHibernate;
import br.com.usjt.sge.usuario.UsuarioDAO;
import br.com.usjt.sge.usuario.UsuarioDAOHibernate;
import br.com.usjt.sge.veiculo.VeiculoDAO;
import br.com.usjt.sge.veiculo.VeiculoDAOHibernate;

/*
 * Fábrica de DAO.
 * @author Beji Lima
 */
public class DAOFactory {
	
	
	public static EstacionamentoDAO criaEstacionamentoDAO(){
		EstacionamentoDAOHibernate estacionamentoDAO = new EstacionamentoDAOHibernate();
		estacionamentoDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());	
		return estacionamentoDAO;
		
	}
	
	/**
	 * Metodo responsavel por criar uma instancia de UsuarioDAO
	 * @return UsuarioDAO
	 */
	public static UsuarioDAO criarUsuarioDAO() {
		
		UsuarioDAOHibernate usuarioDAO = new UsuarioDAOHibernate();
		usuarioDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
		
		return usuarioDAO;
				
	}

	public static TelefoneDAO criaTelefoneDAO(){
		
		TelefoneDAOHibernate telefoneDAO = new TelefoneDAOHibernate();
		telefoneDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
		return telefoneDAO;		
	}
	
	/**
	 * Metodo responsavel por criar uma instancia de EnderecoDAO
	 * @return EnderecoDAO
	 */
	public static EnderecoDAO criaEnderecoDAO(){
		EnderecoDAOHibernate enderecoDAO = new EnderecoDAOHibernate();
		enderecoDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
		return enderecoDAO;
	}
			
	/**
	 * Metodo responsavel por criar uma instancia de VeiculoDAO
	 * @return VeiculoDAO
	 */
	public static VeiculoDAO criarVeiculoDAO(){
		VeiculoDAOHibernate veiculoDAO = new VeiculoDAOHibernate();
		veiculoDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
		return veiculoDAO;
	}	
	/**
	 * Metodo responsavel por criar uma instancia de CepDAO
	 * @return CepDAO
	 */
	public static  CepDAO criarCepDAO(){
		CepDAOHibernate cepDAO = new CepDAOHibernate();
		cepDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
		return cepDAO;
	}
	
	public static ReservaDAO criarReservaDAO(){
		ReservaDAOHibernate reservaDAO = new ReservaDAOHibernate();
		reservaDAO.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
		return reservaDAO;
	}
	
	

}
